home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / pao / towns / paolib / sample / drvchk.c < prev    next >
Text File  |  1991-10-18  |  2KB  |  83 lines

  1. /******************************************************************************
  2. **
  3. **    ドライブ( A: ~ P: )の状態をチェックするプログラムです。
  4. **
  5. **    ドライブ Q: ( CD ) は、cdr_cdinfo() で確認できます。
  6. **    cdr_cdinfo() では、CD の READY 状態の他に CD-ROM かどうかの確認
  7. **    もできます。
  8. **    (注) CD の回転が停止している時には、エラーの返ってくる確率が高い
  9. **         ので、必ず 3 ~ 5 回くらいはリトライ処理をして確認する必要が
  10. **         あります。
  11. **
  12. **    < History >
  13. **    1990.02.07 : CREATE
  14. **
  15. **    < note > : TABS = 4
  16. **
  17. **    Programmed by Y.Hirata ( Nifty ID : NAB03321 )
  18. **
  19. ******************************************************************************/
  20.  
  21. pragma    Off (Floating_point) ;
  22.  
  23. #include <stdio.h>
  24. #include "hc.h"
  25.  
  26. /****************************  ★ メイン ★  *********************************/
  27. void main()
  28. {
  29.     unsigned char    c, st ;
  30.  
  31.     for ( c=0; c<16; c++ ) {
  32.         printf( "\nDRIVE %d(%c:) STATUS..............\n",c,(c+'A') ) ;
  33. /*----------  DRIVE CHECK  ----*/
  34.         st = DRV_status( c ) ;
  35.  
  36.         if ( ((st & 0xf0) >> 4) == DRV_FD )
  37.             printf( "-- FD --\n" ) ;
  38.         else if ( ((st & 0xf0) >> 4 ) == DRV_HD )
  39.             printf( "-- HD --\n" ) ;
  40.         else if ( ((st & 0xf0) >> 4 ) == DRV_RAM )
  41.             printf( "-- RAM --\n" ) ;
  42.         else if ( ((st & 0xf0) >> 4 ) == DRV_ROM )
  43.             printf( "-- ROM --\n" ) ;
  44.         else
  45.             printf( "-- ??? --\n" ) ;
  46.  
  47.         if ( st == DEV_ERR ) {
  48.             printf( "DRIVE is ILLEGAL .....!!!\n" ) ;
  49.         } else {
  50.             if ( (st & 0x01) == 0x01 ) {
  51.                 printf( "DRIVE is NOT READY ....!!!" ) ;
  52.                 if ( (st & 0x04) == 0x04 ) {
  53.                     printf( " ( SINGLE DRIVE MODE )" ) ;
  54.                     printf( "\n→ " ) ;
  55.                     if ( (st & 0x08) == 0x08 )
  56.                         printf( "Can't use FD...!!! ( UNformat )" ) ;
  57.                     else if ( (st & 0x02) == 0x02 )
  58.                         printf( "WRITE PROTECT ON ...!" ) ;
  59.                     if ( !(st & 0x0b) )
  60.                         printf( "DRIVE is (read/write)OK!\n" ) ;
  61.                     printf( "st = %04xH",st ) ;
  62.                 }
  63.                 printf( "\n" ) ;
  64.             } else if ( ((st & 0xf0) >> 4) == DRV_FD ) {
  65.                 if ( (st & 0x08) == 0x08 )
  66.                     printf( "Can't use FD...!!! ( UNformat )\n" ) ;
  67.                 else if ( (st & 0x02) == 0x02 )
  68.                     printf( "WRITE PROTECT ON ...!\n" ) ;
  69.                 if ( !(st & 0x0b) )
  70.                     printf( "DRIVE is (read/write)OK!\n" ) ;
  71.             } else if ( ((st & 0xf0) >> 4) == DRV_HD ||
  72.                     ((st & 0xf0) >> 4) == DRV_RAM ) {
  73.                 printf( "DRIVE is (read/write)OK!\n" ) ;
  74.             } else if ( ((st & 0xf0) >> 4) == DRV_ROM ) {
  75.                 printf( "DRIVE is READ ONLY ...!\n" ) ;
  76.             } else {
  77.                 printf( "?????\n" ) ;
  78.             }
  79.         }
  80.     }
  81. }
  82.  
  83.